home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / simple / prime1.f < prev    next >
Text File  |  1993-04-21  |  1KB  |  47 lines

  1. C     data parallel source program
  2.  
  3.       program prime
  4.       integer wn, n, s, ws, k
  5.       logical*1 a(:), pa(:)
  6. c     pa is replicated on all nodes
  7. cmf$  layout pa(:serial)
  8.       print *, 'Input value n for range from 1 to n : '
  9.       read *, n
  10. c     compute wn
  11.       call cm_timer_clear (0)
  12.       call cm_timer_start (0)
  13.       wn = 1
  14.       do while (wn*wn .lt. n)
  15.          wn = wn + 1
  16.       end do
  17.       print *, 'Root of n = ', wn
  18.       allocate (pa(1:wn),a(1:n))
  19. c     compute primes from 2 to wn
  20.       pa = .true.
  21.       pa(1) = .false.
  22.       k = 2
  23.       do while (k*k .le. n)
  24.          pa (k*k:wn:k) = .false.
  25.          k = k + 1
  26.          do while (.not. pa(k))
  27.            k = k + 1
  28.          end do
  29.       end do
  30.       ws = count (pa)
  31.       print *, 'there are ', ws, ' primes until ', wn
  32. c     compute prime from wn+1 to n
  33.       a = .true.
  34.       a(1) = .false.
  35.       k = 2
  36.       do while (k*k .le. n)
  37. c        no broadcast of pa(k) is required as it is replicated
  38.          if (pa(k)) a(k*k:n:k) = .false.
  39.          k = k + 1
  40.       end do
  41.       s = count (a)
  42.       call cm_timer_stop (0)
  43.       print *, 'there are ',s,' primes until ', n
  44.       call cm_timer_print (0)
  45.       deallocate (a, pa)
  46.       end
  47.